﻿/********************************************************************************
    Copyright (C) Binod Nepal, Planet Earth Solutions Pvt. Ltd., Kathmandu.
	Released under the terms of the GNU General Public License, GPL, 
	as published by the Free Software Foundation, either version 3 
	of the License, or (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
    See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
***********************************************************************************/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;

namespace MixNP.BusinessLayer.Helpers
{
    public class RandomFile
    {
        public static string GetRandomFile(string path)
        {
            string file = null;
            if (!string.IsNullOrEmpty(path))
            {
                var extensions = new string[] { ".png", ".jpg", ".gif" };
                try
                {
                    var di = new DirectoryInfo(path);
                    var rgFiles = di.GetFiles("*.*")
                                    .Where(f => extensions.Contains(f.Extension
                                                                       .ToLower()));
                    int fileCount = rgFiles.Count();
                    
                    if (fileCount > 0)
                    {
                        Pes.Utility.CryptoRandom rand = new Pes.Utility.CryptoRandom();
                        int x = rand.Next (0, fileCount);
                        file = rgFiles.ElementAt(x).FullName;
                    }
                }
                // probably should only catch specific exceptions
                // throwable by the above methods.
                catch { }
            }
            return file;
        }
    }
}
